package 多线程;
/*
  join()方法 表示执行此线程多少毫秒(+纳秒)或直到结束
  参数:默认(不填)0 表示一直执行此线程至此线程结束
      毫秒(,纳秒)   先执行此线程多少毫秒(+纳秒)
  用途:当线程A需要线程B执行完后的数据时，B.join()优先执行B，获取数据后在执行A
 异常: 同sleep的异常
 抛出：InterruptedException - 
      如果任何线程中断了当前线程。当抛出该异常时，当前线程的中断状态 被清除。
	  (就是线程除非自己关闭，外部关闭时，抛出该异常，并清除中断标记，线程继续执行)

*/

public class X02join用法
{
	public static void main(String[]args){
		MyRunnable2 mr2=new MyRunnable2();
		Thread t=new Thread(mr2);
		t.start();
		
		for(int i=0;i<50;i++){
			System.out.println(Thread.currentThread().getName()+"=|=|="+i);
			try
			{
				Thread.sleep(100);
			}
			catch (InterruptedException e)
			{}
			if(i==10){
				try
				{
					t.join();//
				}
				catch (InterruptedException e)
				{e.printStackTrace();}
			}
		}
	}
}

class MyRunnable2 implements Runnable
{

	@Override
	public void run()
	{
		for(int i=0;i<50;i++){
			System.out.println(Thread.currentThread().getName()+"=|=|="+i);
			try
			{
				Thread.sleep(100);
			}
			catch (InterruptedException e)
			{}
		}
	}
}
